package day08.objectdemo.exercise;

/**
 * 定义一个Student类，并要求在其他类中，最多只能创建10个Student类的对象。
 * 	分析：
 * 		1，如果允许外部直接创建对象，显然无法控制创建对象的个数
 * 		2，需要计数器指示外部创建对象的个数
 *
 *
 *
 * @since 09:38
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        for (int i = 0; i < 15; i++) {
            Student.getStudentInstance();
        }
    }
}

class Student {
    // 为了控制创建对象的次数,必须私有化构造器
    private Student() {
    }

    // 需要一个静态成员变量统计创建对象的次数
    private static int count = 0;

    // 使用一个方法来控制创建对象的次数
    /*
        这个方法一定在类的内部
        并且修饰符应该是public static
        返回值类型是Student (因为这个方法是创建对象的)
        方法名随意
        不需要参数
     */
    public static Student getStudentInstance() {
        // 每创建一次对象,count++,判断count的数值
        if (count < 10) {
            count++;
            System.out.println("第" + (count) + "次创建对象");
            return new Student();
        }
        // count = 10时,说明第十个对象已经创建了
        System.out.println("不能创建对象了!");
        return null;
    }
}